C++中STL模板中set的用法总结

您所在的位置:网站首页 set out用法总结 C++中STL模板中set的用法总结

C++中STL模板中set的用法总结

2024-07-12 09:50| 来源: 网络整理| 查看: 265

本文从一名大学生新生的角度出发,简单总结了C++中STL模板set的用法,希望可以帮到任何看到这篇文章的人。

目录

前言

 一、set是什么?

二、set的简单介绍与特性说明

1.简单理解的原理

 2.一些其他需要留意的特性

三、set的用法

1.set的构造函数

2.set的begin()与end()函数 

3.set的遍历

①正序遍历

②逆序遍历

4.set的插入元素的函数

 ①.set中的insert()函数

②set中的emplace()函数

5.set的删除erase()函数

①.删除对应元素

②.删除迭代器对应的元素

③.删除两个迭代器范围内的所有元素

④清空set

6.查找元素是否存在与位置

①find()函数

②count()函数

 ③查找大于等于和严格大于某值的元素(lower_bound()与upper_bound()函数)

④兼得lower_bound与upper_bound的函数equal_range()

7.其他函数(empty()和size())

总结与后文

前言

作者的身份是一名普通的大一计科学生,对于cpp的理解浅薄,还请批评指出。 可能这篇文章更适用于初高中的oier~重在如何使用而非严谨的底层原理

 一、set是什么?

其实set翻译过来就是集合,在高中数学我们知道集合具有互异性,也就是同一个元素只会出现一次。 同样的,set 作为c++中STL容器,它的最大特点就是具有互异性,我们一般可以用来快速判断某个元素是否存在。

二、set的简单介绍与特性说明 1.简单理解的原理

set正式名字叫做关联容器,它的关联性在于它内部是用红黑树对所有元素排序的

Stop!这里因此就有一个特性:set是默认按升序顺序排序好的

一般来说树结构存在形式,其中key用于排序,value为其值,只是在set中value与key

值是一样的,但它仍然属于关联容器

 2.一些其他需要留意的特性 set的插入不需要构造键值对,只需要插入valueset元素不重复,因此可用于去重使用set迭代器遍历,可得到升序(默认)序列set中元素默认按小于比较set元素支持增删查,不允许修改查找某个元素的时间复杂度为O(\log_{2}N) 三、set的用法

在这里,我们都假设我们声明的set的变量名为P

1.set的构造函数

共有三种方式

①直接创建不带参数

setVariable_name

eg: 

setP

 ②通过花括号传入初始值

setVariable_name{x1,x2,x3,……,xn}

eg1. 

setP{2,3}

 eg2.

setP{"LHP","YYT"}

 ③从另外一个set中拷贝元素

set st{"good", "bad", "medium"}; set st2(st);

在定义set时,我们可以通过传入元素排序规则(set中的第二个参数)来改变排序方式,比如

set st{"good", "bad", "medium"};

 在这里greater代表字典序更大的排在前面,我们没传入此参数遍历结果为"bad","good","medium"

而传入了greater规则后结果则为"medium","good","bad".

一种值得一提的构造方式是将STL中的pair与set一同结合起来使用

setP

这样我们便可以判定一对值是否存在于set中(经常可用于判断一个坐标是否已经经过)

注意插入时我们用到make_pair()语句

Set_Name.insert(make_pair(x,y))

2.set的begin()与end()函数 

要讲这个就得先讲迭代器

set::iterator it; set::iterator it;

我们可以简单的将迭代器暂时理解为指针

也因为如此理解,*it代表对应地址的值,因此采用这种方法访问元素

P.begin()返回第一个元素的迭代器 

P.end()返回最后一个元素下一个位置的迭代器

3.set的遍历 ①正序遍历

因此,想要遍历P,则可以如此写

set::iterator it; for(it=P.begin();it!=P.end();it++){ cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3